bitkeeper revision 1.527 (3f8fb4a16LPOSuutnwr8zgDB3Ws1Kw)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Fri, 17 Oct 2003 09:21:37 +0000 (09:21 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Fri, 17 Oct 2003 09:21:37 +0000 (09:21 +0000)
system.h:
  Slightly better restore_flags in xenolinux.

xenolinux-2.4.22-sparse/include/asm-xeno/system.h

index 12bfe68c1483a10b283345ce29ca34bd842b0b6e..3b59252ca3dab425318dea08a28ac7d9f619b0af 100644 (file)
@@ -320,21 +320,6 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
 #define set_wmb(var, value) do { var = value; wmb(); } while (0)
 
 
-#define __save_flags(x)                                                       \
-do {                                                                          \
-    (x) = test_bit(EVENTS_MASTER_ENABLE_BIT,                                  \
-                   &HYPERVISOR_shared_info->events_mask);                     \
-    barrier();                                                                \
-} while (0)
-
-#define __restore_flags(x)                                                    \
-do {                                                                          \
-    shared_info_t *_shared = HYPERVISOR_shared_info;                          \
-    if (x) set_bit(EVENTS_MASTER_ENABLE_BIT, &_shared->events_mask);          \
-    barrier();                                                                \
-    if ( unlikely(_shared->events) && (x) ) do_hypervisor_callback(NULL);     \
-} while (0)
-
 #define __cli()                                                               \
 do {                                                                          \
     clear_bit(EVENTS_MASTER_ENABLE_BIT, &HYPERVISOR_shared_info->events_mask);\
@@ -349,6 +334,15 @@ do {                                                                          \
     if ( unlikely(_shared->events) ) do_hypervisor_callback(NULL);            \
 } while (0)
 
+#define __save_flags(x)                                                       \
+do {                                                                          \
+    (x) = test_bit(EVENTS_MASTER_ENABLE_BIT,                                  \
+                   &HYPERVISOR_shared_info->events_mask);                     \
+    barrier();                                                                \
+} while (0)
+
+#define __restore_flags(x)      do { if (x) __sti(); } while (0)
+
 #define safe_halt()             ((void)0)
 
 #define __save_and_cli(x)      do { __save_flags(x); __cli(); } while(0);